package com.cloud.system.api.service;

import java.util.List;

import com.cloud.system.api.bean.HumanRoleForm;
import com.cloud.system.api.bean.HumanRoleResourcesForm;
import com.cloud.system.api.entity.HumanInfo;
import com.cloud.system.api.entity.RoleInfo;
import com.cloud.system.common.result.QkTreeNode;
import com.cloud.system.common.result.Quokka;

public interface RoleInfoService {
	
	/**
	 * 加载机构岗位树
	 * @param unitId
	 * @param isRoot
	 * @return
	 */
	public List<QkTreeNode> listRoleTree(long unitId, boolean isRoot);

	/**
	 * 根据岗位主键查找岗位详细信息
	 * @param roleId
	 * @return
	 */
	public RoleInfo load(long roleId);

	/**
	 * 删除岗位信息
	 * @param roleId
	 * @return
	 */
	public long delete(long roleId);

	/**
	 * 保存或更新岗位基本信息
	 * @param roleInfo
	 * @return
	 */
	public RoleInfo saveUpdate(RoleInfo roleInfo);

	/**
	 * 根据名称查找提示
	 * @param name
	 * @return
	 */
	public List<RoleInfo> search(String name);
	
	/**
	 * 根据机构编号查询岗位信息
	 * @param id
	 * @return
	 */
	public List<RoleInfo> findRolesByUnitId(long id);
	/**
	 * 显示岗位新增界面
	 * @param unitId
	 * @return
	 */
	public RoleInfo showAdd(long unitId);

	/**
	 * 跟新或修改岗位信息
	 * @param role
	 * @return
	 */
	public RoleInfo saveUpdateRole(RoleInfo role);
	
	/**
	 * 根据岗位获取人员信息
	 * @param roleId
	 * @return
	 */
	public List<HumanInfo> getHumanByRole(long roleId);

	/**
	 * 保存更新人员岗位信息
	 * @param form
	 * @return
	 */
	public long saveUpdateRoleHuman(HumanRoleForm form);

	/**
	 * 加载岗位岗位权限
	 * @param roleId
	 * @return
	 */
	public Quokka loadRoleResources(long roleId);

	/**
	 * 保存更新岗位权限
	 * @param form
	 * @return
	 */
	public long saveUpdateRoleResources(HumanRoleResourcesForm form);
	
	/**
	 * 
	 * @param humanId
	 * @return
	 */
	public List<Long> loadRoleIds(Long humanId);

}
